小弟的規劃表 - http://blog.kerkerj.in/blog/2014/11/01/planning/
好讀版 - http://blog.kerkerj.in/blog/2014/10/23/api-d23/
接上篇,我們已經可以拿到 todo list 了
也可以拿到特定的 todo task
再來我們就可以編輯特定的 todo task 了對吧?
不囉唆直接進入程式碼
routes/users.js
// Update a todo task
router.put('/:user_id/todos/:todo_id', function(req, res) {
    var user_id = req.params.user_id;
    var todo_id = req.params.todo_id;
    var data = req.body;
    TODO.update(
        { _id: todo_id, user_id: user_id },
        { $set: { content: data.content } },
        function (err, num, raw, results) {
            if (err) {
                res.status(400).json(
                    { error: "update data error" }
                );
            } else {
                TODO.find({ _id: todo_id, user_id: user_id }, function (err, results) {
                    res.status(201).json(
                        results[0]
                    );
                });
            }
        }
    );
});
這次拿資料要拿三組: user_id, todo_id, 以及 data from req.body
var user_id = req.params.user_id;
var todo_id = req.params.todo_id;
var data = req.body;
body 的資料很簡單,就是欲修改的 content 的資料:
{ "content": "想修改的資料" }
再來,除了是使用 .update 方法以及同樣要下 WHERE 參數外, .update 方法還多了一個參數:
{ _id: todo_id, user_id: user_id },
{ $set: { content: data.content } },
$set 的意思等同於 SQL 語法中的 SET
如果沒有加 $set 變成下面這樣:
{ _id: todo_id, user_id: user_id },
{ content: data.content } ,
整個資料就會被洗掉,變成只有 { content: data.content }
因此有沒有加 $set 差很多哦
後面一樣是 callback 的處理
都寫好後,實際開 POSTMAN 試試看吧!
記得要使用 PUT 來丟 request
例子如下,我把原本的 buy milk 改成 buy milk and banana

這樣離完成 API 就不遠啦!
明天就稍微休息一下吧 XD